"""author: wenyao
   data: 2021/11/12
   project: cjh
"""
#函数的参数传递本质上都是传递引用


#变量的空间作用域
#不可变数据类型
# def func1(x):
#     print(x)
#     #局部变量
#     x = 100
#     print(x)
#
# #全局变量
# x =1
# func1(x)
# print(x)

#可变数据类型
# def f(x):
#     x[0] = 100
#     print(x)
#
# a = [1,2,3]
# f(a)
# print(a)

#参数定义的时候，。默认参数避免定义成一个可变数据类型
# def f(a=[]):
#     a.append(1)
#     print(a)
# f()
# f()
# f()

#变量的作用域
# def f():
#     #x = 2  如果你要申明全局变量，那就不要在前面又定义个同名的局部变量
#     global x #申明x为全局变量
#     x = 5
# # x = 1
# #x= 5
# f()
# print(x)

#变量名的解析(LEGB)
#1、在本地变量中找  -- local
#2、在任意上层函数中找 -- enclosing
#3、在全局作用域 -- global
#4、在内置作用域 --  builtin
#print(a)
# print(__name__)

# def f():
#     #x = 2
#     def f2():
#         #x=3
#         #print(x)
#         print(__name__)
#     f2()
# #x=1
# #__name__ = "sc"
# f()

##############文档注释
#文档注释是包、模块、类或者是函数第一个用三引号引起来的字符串

def f():
    """
    this is test func
    f()
    :return:
    """
    print("hello")
print(help(f))
